package com.cskaoyan.charstream.transfer;

import java.io.*;

/*
        1.把当前项目目录下的a.txt内容复制到d:\\b.txt中  复制文本数据是没问题的
        2.复制图片和视频是否ok？ 复制之后，文件无法打开，复制的不正确

      a. 对于图片和视频数据，它们都有自己特殊的编码格式，它们所使用的编码格式和我们之前讲的
      基于字符集，对字符数据进行的编解码，没有任何关系

      b. 所以，当我们使用字符输入流，来读取图片和视频数据的时候，当字符输入流试图对图片
      和视频数据，进行基于字符集进行解码的时候，会发现有一些二进制数值，
      无法对应到字符集中的字符（遇到不认识的字符）

      c. 此时，字符输入流，要么丢弃这些不认识码值，
        要么把这些没有在字符集中匹配到的编码值替换成特殊编号对应的字符？？？

      其实，这意味着，字符输入流，在读取视频或图片数据的时候，就已经修改了原来的视频和图片
 */
public class Demo1Exercise {

    public static void main(String[] args) throws IOException {
        String src = "d:\\a.txt";
        String dest = "a.txt";

        // 复制文本文件
        //copy(src, dest);


        src = "d:\\demo\\picture.jpg";
        dest = "picture.jpg";
        // 复制图片
        //copy(src, dest);



        src = "d:\\demo\\vedio.mp4";
        dest = "vedio.mp4";
        // 复制视频
        copy(src, dest);


    }

    public static void copy(String srcPath, String destPath) throws IOException {
        //1. 先创建流对象
        Reader reader =
                new InputStreamReader(new FileInputStream(srcPath));

        Writer writer
                = new OutputStreamWriter(new FileOutputStream(destPath));


        // 复制文件内容
        int count;
        char[] chars = new char[1024];

        while ((count = reader.read(chars)) != -1) {

            // 写一个字符数组
            writer.write(chars, 0, count);
        }

        // 关闭流
        writer.close();
        reader.close();

    }
}
